# Playable - Interface for playable streams. MediaPlayer object plays Playables
# Copyright (C) 2007 Lauri Taimila
# 
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
# 
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.

__licence__ = "GPLv2"
__copyright__ = "2007, Lauri Taimila"
__author__ = "Lauri Taimila <lauri@taimila.com>"

class Playable:
    """
    Interface for playable media.
    
    This is an interface for all of those objects that can be played with the
    MediaPlayer object. MediaPlayer playes only files that implement this
    interface.
    
    At the moment following classes implement this:
        - Track
        - VideoClip
        - Movie
        - TVEpisode
        
    In the future we want to add DVB channels and DVD/CD as Playables.
    """
    
    VIDEO_STREAM = 0
    AUDIO_STREAM = 1
    DVB_STREAM   = 2
    
    def get_uri(self):
        """
        Get URI of the playable stream.
        @return: String
        """
        return None
        
    def get_type(self):
        """
        Get type of the stream. This is one of the 
        constants defined in Playable class.
        @return: Integer
        """
        return None
    